home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
031-040
/
amok40
/
flanz
/
flanz.dok
< prev
next >
Wrap
Text File
|
1993-11-04
|
7KB
|
194 lines
Dokumentation zu
Flanz - Evolution
von Markus Peuckert
COPYRIGHT
Dieses Programmpaket mit SourceCode ist Public-Domain. Es darf nur
komplett weitergegeben werden. Kommerzielle Nutzung nur in Rücksprache
mit mir (Markus Peuckert).
Markus Peuckert
Schützenstraße 50
3550 Marburg/Lahn
Tel.: 06421/681688
BEINHALTET:
Flanz
FlGad.Def
FlGad.Mod
IntuiSup.Def
IntuiSup.Mod
und deren Kompilate
Flanz.DOK
C0
C1
C2
C3
NÄHERES:
Dies ist ein Programm zur Erzeugung von L-Systemen, die 1968 von dem
dänischen Biologen und Mathematiker Aristid Lindenmeyer entwickelt wurden und
Grammatiken und Regeln zur Erzeugung von Zeichenketten darstellen. Diese
Zeichenketten sind nun in der Lage, Pflanzen (Gräser, Bäume) zu simulieren.
Lediglich vier verschiedene Buchstaben sind dazu notwendig diese Systeme zu
entwickeln:
0, 1, [, ]
Dabei geht man davon aus, daß jeder Buchstabe durch eine Zeichenkette
aus wieder diesen Buchstaben ersetzt wird. Als Beispiel sollen folgende Regeln
dienen:
0 -> 1[0]1[0]0
1 -> 11
[ -> [
] -> ]
Die Null wird durch die hinter dem Pfeil stehende Zeichenkette ersetzt
usw. Genauso wird mit den anderen Zeichen verfahren. Nimmt man nun die so
erzeugte neue Zeichenkette und wendet die Regeln nocheinmal an, so bekommt man
eine noch längere Zeichenkette. Je mehr Generationen man so erzeugt, umso
komplexere Zeichenketten (Pflanzen) bekommt man. Die Anzahl der Generationen ist
somit nur vom Speicher begrenzt, bzw. von der Konfiguration des Feldes, in dem
sie abgespeichert wird.
Das Programm ist so ausgelegt, daß beliebige ursprüngliche
Zeichenketten eingegeben werden können. Ebenso können die Regeln beliebig
abgeändert, verlängert oder verkürzt werden.
Zur Handhabung des Programms:
Zuerst muß eine Datei geschrieben werden, die die ursprüngliche
Zeichenkette und die Regeln enthält, z.B.:
0 [ 0 ];
1 [ 0 ] 1 [ 0 ] 0;
1 1;
[;
];
Zur besseren Lesbarkeit sollten die einzelnen Zeichen durch Leerstellen
getrennt werden.
Das Programm geht davon aus, daß in der ersten Zeile die Ursprungskette
steht, die zu allererst ersetzt wird.
In der zweiten Zeile steht dann die Zeichenkette, die für die "0" eingesetzt
wird.
In der dritten Zeile steht die Zeichenkette, die für die "1" eingesetzt wird,
usw.
Jede Zeile, bzw. Regel muß mit einem Semikolon abgeschlossen werden,
damit das Programm erkennt, wo die nächste Regel beginnt. Diese Dateien
können mit einem Editor Ihrer Wahl geschrieben werden und müssen im
ASCII-Format auf einem Datenträger vorliegen. Einige Dateien sind anbeigelegt!
Die Länge der Eingabedatei ist auf 50 Zeichen beschränkt, d.h., alle
Zeilen zusammen dürfen nicht mehr als 50 Zeichen enthalten. Wie Sie
allerdings die einzelnen Zeilen aufteilen (Zeichen pro Zeile), ist Ihnen
selbst überlassen.
Dabei haben die einzelnen Zeichen folgende Bedeutung:
0 -> Ast
1 -> Ast
[ -> Verzweigung, nach rechts oder links, immer abwechselnd
] -> Blatt und Ende des Astes
Das Programm kann vom CLI oder der Workbench gestartet werden, wobei
man darauf achten sollte den Stack (mindestens 30000) nicht zu klein zu wählen,
da das Programm das Zeichnen der "Flanze" (weils keine echte ist) rekursiv
vornimmt und bei hoher Generationszahl (abhängig auch von der Gestaltung der
Eingabedatei) mit einem "Stack Overflow" abbricht. Am besten soviel wie möglich
Stack reservieren. Wer es sich leisten kann ruhig 200000.
Es erscheint nun ein eigener Screen mit zwei Windows:
Einem Zeichenwindow für das Gewächs und einem Steuerwindow.
Nun die Erklärung der einzelnen Gadgets und Funktionen:
Chromosom:
Das Oberste Gadget ist ein Stringgadget in dem die Eingabedatei mit den
Regeln (ab hier Chromosom genannt) spezifiziert wird. Ist der richtige
Dateiname eingeben, kann man weiterarbeiten. Ansonsten erscheint die Meldung
"Datei..." im Steuerfenster. Hat man noch keine Datei angegeben und drückt
versonnen auf den Gadgets herum, erscheint ebenfalls eine Meldung, daß noch
kein Chromosom vorhanden ist. Das Programm testet allerdings nicht, ob Ihre
Datei sinnvolle Daten enthält (genau vier Zeilen und alle mit Semikolon
abgeschlossen und nur gültige Zeichen und alles zusammen nicht länger als
50 Zeichen). Einige Beispieldateien sind beigelegt (C0, C1, C2, C3).
Generation:
Hier gibt man die Anzahl der Generationen ein. Je höher die Zahl,
desto komplexer die Flanze.
Noxendosis:
Diese Zahl gibt die Anzahl der Mutationen an, die pro Flanze in den
letzten beiden Generationen erzeugt werden. Eine Noxe ist ein schädlicher
Einfluß auf einen Organismus (Strahlen, Gifte, Trauma). Normalerweise ist
diese Zahl Null. Probieren Sie ruhig einige höhere Dosen aus und lassen
Sie sich überraschen, wie die Flanze dann aussieht.
Astwinkel:
Der Astwinkel erklärt sich fast von selbst. Verschieden Werte lassen
das Objekt sehr unterschiedlich aussehen. Voreinstellt sind 25 Grad.
Probieren Sie mal Winkel von 45, 90 oder 120 Grad aus.
Skalierung:
Ist die Flanze mal über den Bildschirmrand hinausgewachsen oder zu
klein. So kann man hier einen Faktor eingeben, der zu einem Exponenten
addiert wird, der die Länge der einzelnen Abschnitte der Flanze bestimmt.
(Vorsicht! Skalierung nimmt exponential zu!). Danach können Sie sich
die neu bestimmte Größe der Flanze mit Drücken des "Zeich"-Gadgets anschauen.
Wachs:
Um nun endlich ein Ergebnis zu sehen, drücke man das "Wachs"-Gadget
(für Wachsen lassen).
Zeich:
Lediglich nocheinmal zeichnen der Flanze, z.B., nach vorheriger
Neuskalierung.
Ende:
Ende.
ZUSATZ:
Wenn Sie bei aktivem Steuerfenster die rechte Maustaste drücken,
verlagert sich das Steuerfenster hinter das Zeichenfenster und stört
den Anblick der Flanze nicht mehr. Nochmal rechte Maustaste -> wieder nach
vorn. Oder das "Depth"-Gadget des Zeichenfensters benutzen.
Anhang für Freaks, Programmierer und Speichermillionäre:
Wer will kann die Konstanten im Hauptmodul WIDTH und HEIGHT auf
WIDTH = 704 und HEIGHT = 564 heraufsetzen und bekommt dann einen OverscanScreen.
Allerdings sollte man vorher die Datei "devs:system-configuration" entsprechend
ändern (mittels eines Patchprogrammes), damit die Maus richtig mitspielt.
Die Größe des Feldes für das Einlesen des Chromosoms ist auf
50 Zeichen beschränkt (MaxGen = 50).
Wem das nicht reicht, kann es höher setzen. Mir allerdings reichts und es
scheint mehr als ausreichend für die meisten (alle) Versuche.
Die Anzahl der Aminosäuren (MaxAS = 40000) ist für die Größe
des Speicherfeldes der Generation des Gewächses zuständig. Diese Zahl ist
ausgelegt für Systeme mit nur 512 kB und ist manchmal nicht genug.
Wer genügend Speicherplatz besitzt, kann wesentlich mehr reservieren
(MaxAS = 70000) und hat dann uneingeschränkte Möglichkeiten.
Dann noch viel Spaß damit
Markus